※以下內容皆是新手撰寫,內容可能不完全正確
今天的主題是Null,完全不曉得這是用來做啥的QwQ 是個有點抽象的概念呢~不過,都寫到這裡了,就順著寫下去囉 :D
可為Null的型別(nullable types) 是C#裡面特殊的屬性/型別,給值可以給一般的值或null值;舉例,Nullable這個變數裡面可以存從-2147483648到2147843647之間的數字,或者存null(為0);其它型別的也是類似的pattern,null格式如下,有兩種表示方法:
//Nullable <資料類型> <變數名稱> = null;
//<資料類型> ? <變數名稱> = null;
看了一下,現在大部分都用第二種表示法,像這樣:
int? x = null; //可為null型別,給null值
int? y = 87; //可為null型別,給正常值
再來講的是 Null聯合運算子(the null coalescing operator) :Null聯合運算子(用兩個問號??這樣表示)跟可為null值型別和引用型別(nullable value types and reference types)一併使用,於允許隱含轉換(implicit conversion)的情況下把一種運算元轉換成另一種可為null型別的運算元。
寫個小程式看看這些可為null的東西能做些什麼~
using System;
namespace Nullables
{
class Program
{
static void Main(string[] args)
{
int? x = null;
double ? y = 94.87;
double z;
z = x ?? 8787;
Console.WriteLine("The first z: {0}", z);
z = y ?? 8787;
Console.WriteLine("The second z: {0}", z);
}
}
}
上面這串執行後會是這樣子:
The first z: 8787
The second z: 94.87
由於變數x的值是null,用??之後值會變成符號後面的運算元,而變數y原本等於94.87,這樣z的值會變成??符號前運算元的值。
順便說一下,string裡面的{0}表示把跟在string後面第一順位的參數代進去,如果有第二個參數則是{1},以此類推,不然只放參數是跑不出來的喔~
今天講到這兒,雖然null這東西剛開始看著不知道會幹嘛,但概念並沒有很難,想要快點知道nullables可以做啥就多寫幾次程式跑看看,出問題也沒差,反正寫程式就是一值從錯誤中學教訓(ˊˇˋ) 寫難搞的文本分析去,雙主修就是個自己做死的節奏 ( T ^ T ) 下一篇要談的是陣列 :>
參考資料:
(a) Tutorialspoint; C# - Nullables
https://www.tutorialspoint.com/csharp/csharp_nullables.htm
(b) TutorialsTeacher; Nullable Type in C#
https://www.tutorialsteacher.com/csharp/csharp-nullable-types
(c) StackOverflow; What does {0} mean when found in a string in C#?
https://stackoverflow.com/questions/530539/what-does-0-mean-when-found-in-a-string-in-c